Mac OSX 下的数据库升级最麻烦的不过权限的问题.本文的MySQL的安装方式为OSX下DMG磁盘镜像的安装方式, Mac Ports/Homebrew 的方式大同小异.
从 5.6.17 升级到 5.7.18
安装目录信息
ls -al /usr/local |grep mysql
lrwxr-xr-x 1 root wheel 30B 5 21 00:39 mysql@ -> mysql-5.6.17-osx10.7-x86_64
drwxr-xr-x 5 root wheel 170B 5 21 00:39 mysql-5.6.17-osx10.7-x86_64/
drwxr-xr-x 13 root wheel 442B 5 21 00:46 mysql-5.7.18-macos10.12-x86_64/
安装新MySQL版本
这个过程会删除 mysql-5.6.17-osx10.7-x86_64
下的除data
目录以外的文件. 为了避免数据丢失, 最好先把data
备份到其他位置. 新PKG包安装完成后 mysql@
软连接的目标会指向新版本.
ls -al /usr/local |grep mysql
lrwxr-xr-x 1 root wheel 30B 5 21 00:39 mysql@ -> mysql-5.7.18-macos10.12-x86_64
drwxr-xr-x 5 root wheel 170B 5 21 00:39 mysql-5.6.17-osx10.7-x86_64/
drwxr-xr-x 13 root wheel 442B 5 21 00:46 mysql-5.7.18-macos10.12-x86_64/
升级
# 进入新版本目录
cd /usr/local/mysql-5.7.18-macos10.12-x86_64
# 删除新版本的数据目录
sudo rm -rf ./data
# 复制老版本的数据目录到新版本目录
sudo cp -R ../mysql-5.6.17-osx10.7-x86_64/data ./
# 修复目录权限
sudo chown -R _mysql ./data
# 启动MySQL
# 一定要加 --skip-grant-tables 关闭权限检查
sudo ./bin/mysqld_safe --skip-grant-tables
# 执行升级脚本
# 升级过程有哦一大堆升级信息输出, 最关键的是: Upgrade process completed successfully. 看到这个就说明升级成功了.
sudo ./bin/mysql_upgrade
# 停止通过 mysqld_safe 启动的服务器, 正常启动服务器
sudo ./support-files/mysql.server stop
sudo ./support-files/mysql.server start
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。